# -*- coding: utf-8 -*-
import json

from match import Extractor
import os.path
import regex as re


class QiangJieExtractor(Extractor):
    """
        (一)、三年以上十年以下有期徒刑的量刑基准
        抢劫一次，基准刑为有期徒刑四年。
        抢劫二次，基准刑为有期徒刑六年。
        抢劫取得财物，数额超过2000元，基准刑增加六个月；每增加数额1500元，基准刑增加六个月。
        (二)、十年以上有期徒刑、无期徒刑的量刑基准
        根据刑法第二百六十三条，有下列情形之一的，基准刑为有期徒刑十一年：
        1、入户抢劫的；
        2、在公共交通工具上抢劫的；
        3、抢劫银行或者其他金融机构的；
        4、多次抢劫或者抢劫数额巨大的；
        5、抢劫致人重伤的；
        6、冒充军警人员抢劫的；
        7、持枪抢劫的；
        8、抢劫军用物资或者抢险、救灾、救济物资的。
        多次抢劫并且数额巨大的，基准刑为有期徒刑十二年。
        入户抢劫并且数额巨大的，基准刑为有期徒刑十二年。
        除上述情形外，同时具有两种以上刑法第二百六十三条规定的情形的，基准刑为有期徒刑十三年。
        抢劫取得财物数额巨大，超过1万元以上的，每增加5万元，基准刑增加一年。
        抢劫多次，次数超过6次的，基准刑增加一年；次数超过10次的，基准刑增加一年六个月。
        具有以下情节的，基准刑为无期徒刑：
        1、抢劫致人重伤，且造成被害人6级以上（含6级）严重伤残的；
        2、抢劫致二人以上重伤的；
        3、同时具有两种以上刑法第二百六十三条规定的情形的,并造成恶劣社会影响的；
        4、同时具有三种以上刑法第二百六十三条规定的情形的；
        5、抢劫数额达20万元以上，且同时具有刑法第二百六十三条规定的其他情形之一（不含多次）或造成恶劣社会影响的。
        二、分格原则
        基准刑为有期徒刑的，量刑格均为6个月。
    """

    @staticmethod
    def is_my_job(file_path):
        return "抢劫" in file_path

    @staticmethod
    def extract(text):
        result = {}
        result['持刀胁迫'] = re.search(r"持刀|刀具|刀|匕首", text) is not None
        result['致人轻伤'] = re.search(r"轻伤|轻微伤", text) is not None
        result['致人重伤'] = re.search(r"重伤|致残", text) is not None
        result['暴力手段'] = re.search(r"殴打|捆绑|拖拽|捆|掐|扼", text) is not None
        result['多次抢劫或数额巨大'] = re.search(r"次抢劫|数额巨大", text) is not None  # 一万元以内较大  一万以上巨大  可累计
        return result


if __name__ == '__main__':
    print(QiangJieExtractor.extract("造成1人死亡，损失人民币5万元；承担次要责任，事后驾车逃逸，但积极赔偿损失。"))
    from match import *
    from storage import *
    import json
    import os

    data_util = DataUtil("E:/project/yaosu_law/pro/抢劫罪")
    extractors = [QiangJieExtractor]

    file_path, text = data_util.next_line()
    count_dict = {}
    count_key_list = ["持刀胁迫", "致人轻伤", "致人重伤", "暴力手段", '多次抢劫或数额巨大']
    while text:
        text_json = json.loads(text)
        if file_path not in count_dict:
            count_dict[file_path] = {"count": 0}
        for extractor in extractors:
            if extractor.is_my_job(file_path):
                result = extractor.extract("\n".join(text_json["content"]))
                for key in count_key_list:
                    result_value = result[key]
                    if (type(result_value) == int or type(result_value) == float):
                        if key in count_dict[file_path]:
                            count_dict[file_path][key] = count_dict[file_path][key] + result_value
                        else:
                            count_dict[file_path][key] = result_value
                    else:
                        if key in count_dict[file_path]:
                            if result_value in count_dict[file_path][key]:
                                count_dict[file_path][key][result_value] = count_dict[file_path][key][result_value] + 1
                            else:
                                count_dict[file_path][key][result_value] = 1
                        else:
                            count_dict[file_path][key] = {}
                            count_dict[file_path][key][result_value] = 1
        count_dict[file_path]["count"] = count_dict[file_path]["count"] + 1
        file_path, text = data_util.next_line()
    for key in count_dict:
        print(key)
        count = count_dict[key]["count"]
        for ckey in count_key_list:
            ckey_result = count_dict[key][ckey]
            if (type(ckey_result) == int or type(ckey_result) == float):
                print(str(ckey) + ":%f" % (ckey_result / float(count)))
            else:
                for cckey in ckey_result:
                    print(str(ckey) + "_" + str(cckey) + ":%f" % (ckey_result[cckey] / float(count)))
    print(count_dict)
